#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>

int count = 10000;

int main(int argc, char const *argv[])
{
    int val = 100;
    printf("主进程(%d)开始执行\n", getpid());

    // 创建子进程
    /*
        fork内部会去创建子进程(将当前父进程的w内存完整拷贝一份，作为子进程的内存)
            如果失败，返回-1
            如果成功，如果选择执行父进程，返回子进程的pid，如果选择执行子进程，返回0
            无论成功失败都会继续向下执行
    */
    pid_t pid = fork();
    if (pid == -1) {
        printf("创建子进程失败\n");
        exit(EXIT_FAILURE);
    } else if (pid == 0) { // 子进程
        val++;
        printf("子进程(%d)开始执行, 父进程id: %d, val=%d\n", getpid(), getppid(), val);
    } else { // 父进程
        val++;
        printf("父进程(%d)开始执行, 子进程id: %d, val=%d\n", getpid(), pid, val);
        while (--count)
        {
            
        }
        printf("父进程while结束了\n");
        
    }
    
    return 0;
}
